#ifndef _MIX_THREAD_CONDVAR_H_
#define _MIX_THREAD_CONDVAR_H_ 

namespace mix
{

class Mutex;

class CondVar {
public:
	explicit CondVar( Mutex& mutex);
	~CondVar();

	void wait();
	//! 返回true表示已经获取资源,返回false表示超时
	bool wait( long msec);
	void signal();
	void signalAll();

	void* getNative();

private:
    CondVar( const CondVar&);
    CondVar& operator=( const CondVar&);

    Mutex& _mutex;
    void* _impl;
};


}	// namespace mix

#endif	// _MIX_THREAD_CONDVAR_H_
